const redis = require('ioredis');
const $redisConfig = require('../config/config').redisConfig;
const $errorCode = require('../config/config').errorCode;
const $redis = redis.createClient($redisConfig);

/**处理 数据*/

/**
 * 获取redis数据
 * @param {any} key
 * @param {Function} callback
 * @returns Promise
 */
exports.getData = function (key, callback) {
    return new Promise((resolve, reject) => {
        $redis.get(key, function (err, data) {
            if (err) {
                callback && callback(data);
                reject(err);
            } else {
                callback && callback(data);
                resolve(data);
            }
        });
    })
}

/**
 * 设置redis数据
 * @param {any} key
 * @param {any} value
 * @param {Function} callback
 * @returns Promise
 */
exports.setData = function (key, value, callback) {
    return new Promise((resolve, reject) => {
        $redis.set(key, value, function (err, data) {
            if (err) {
                callback && callback(data);
                reject(err);
            } else {
                callback && callback(data);
                resolve(data);
            }
        });
    })
}

/**
 * 删除redis数据
 * @param {any} key
 * @param {Function} callback
 * @returns Promise
 */
exports.delData = function (key, callback) {
    return new Promise((resolve, reject) => {
        $redis.del(key, function (err, data) {
            if (err) {
                callback && callback(data);
                reject(err);
            } else {
                callback && callback(data);
                resolve(data);
            }
        });
    })
}


/**
 * 设置过期时间
 * @param {any} key
 * @param {any} value
 * @param {any} time 秒
 * @param {Function} callback
 * */ 
exports.setExpire = function (key, value, time, callback) {
    return new Promise((resolve, reject) => {
        $redis.set(key, value, 'EX', time, function (err, data) {
            if (err) {
                callback && callback(data);
                reject(err);
            } else {
                callback && callback(data);
                resolve(data);
            }
        });
    })
}

// 连接成功事件
$redis.on('connect', () => {
    console.log('Connected to Redis successfully');
});


// 添加错误监听器
$redis.on('error', (err) => {
    console.error('Redis Client Error', err);
});

// 监听 ready 事件确保客户端准备好
$redis.on('ready', () => {
    console.log('Redis Client Ready');
});